import json
from ctpsettle import TransactionsHandler
from ctpsettle import SettlementParser

def testTransactionHandler():
    handler = TransactionsHandler()
    
    text = """                                                                 成交记录 Transaction Record 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|成交日期| 投资单元 | 交易所 | 交易编码  |       品种       |      合约      |买/卖|   投/保    |  成交价  | 手数 |   成交额   |       开平       |  手续费  |  平仓盈亏  |     权利金收支      |     成交序号     |   资金账号   |
|  Date  |InvestUnit|Exchange|tradingcode|     Product      |   Instrument   | B/S |    S/H     |   Price  | Lots |  Turnover  |       O/C        |   Fee    |Realized P/L|Premium Received/Paid|     Trans.No.    |   AccountID  |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|20230215|123456    |上期所  |9999203177 |白银              |     ag2306     |   卖|投机        |  4946.000|     4|   296760.00|平今                |      0.00|      240.00|                 0.00|76886             |123456        |
|20230215|123456    |上期所  |9999203177 |白银              |     ag2306     |买   |投机        |  4927.000|     4|   295620.00|开                 |      2.96|        0.00|                 0.00|168930            |123456        |
|20230215|123456    |上期所  |9999203177 |白银              |     ag2306     |买   |投机        |  4942.000|     4|   296520.00|开                 |      2.97|        0.00|                 0.00|72736             |123456        |
|20230215|123456    |上期所  |9999203177 |白银              |     ag2306     |   卖|投机        |  4927.000|     2|   147810.00|开                 |      1.48|        0.00|                 0.00|167995            |123456        |
|20230215|123456    |上期所  |9999203177 |黄金              |     au2308     |   卖|投机        |   413.100|     2|   826200.00|开                 |      4.00|        0.00|                 0.00|168738            |123456        |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|共   5条|          |        |           |                  |                      |            |          |    16|  1862910.00|                  |     11.41|      240.00|                 0.00|                  |              |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
能源中心---INE  上期所---SHFE   中金所---CFFEX  大商所---DCE   郑商所---CZCE   广期所---GFEX
买---Buy   卖---Sell
投机---Speculation  套保---Hedge  套利---Arbitrage  一般---General  交易---Trade  做市商---Market Maker
开---Open 平---Close 平今---Close Today 强平---Forced Liquidation 平昨---Close Prev. 强减---Forced Reduction 本地强平---Local Forced Liquidation 
"""
    
    lines = text.split("\n")
    print(lines)
    result = handler.parse(lines)
    print(result)

def testSettlementParser():

    text = """                                           SimNow社区系统                                           
                                                                    制表时间 Creation Date：20230215
----------------------------------------------------------------------------------------------------
                             交易结算单(盯市) Settlement Statement(MTM)                             
客户号 Client ID：  123456          客户名称 Client Name：client name
日期 Date：20230215

        资金状况   资金账号：123456  币种：人民币  Account Summary AccountID：123456 Currency：CNY    
----------------------------------------------------------------------------------------------------
期初结存 Balance b/f：                 10000000.00  基础保证金 Initial Margin：                 0.00
出 入 金 Deposit/Withdrawal：                 0.00  期末结存 Balance c/f：                9998858.59
平仓盈亏 Realized P/L：                     240.00  质 押 金 Pledge Amount：                    0.00
持仓盯市盈亏 MTM P/L：                    -1370.00  客户权益 Client Equity：              9998858.59
期权执行盈亏 Exercise P/L：                   0.00  货币质押保证金占用 FX Pledge Occ.：         0.00
手 续 费 Commission：                        11.41  保证金占用 Margin Occupied：           172043.20
行权手续费 Exercise Fee：                     0.00  交割保证金 Delivery Margin：                0.00
交割手续费 Delivery Fee：                     0.00  多头期权市值 Market value(long)：           0.00
货币质入 New FX Pledge：                      0.00  空头期权市值 Market value(short)：          0.00
货币质出 FX Redemption：                      0.00  市值权益 Market value(equity)：       9998858.59
质押变化金额 Chg in Pledge Amt：              0.00  可用资金 Fund Avail.：                9826815.39
权利金收入 Premium received：                 0.00  风 险 度 Risk Degree：                     1.72%
权利金支出 Premium paid：                     0.00  应追加资金 Margin Call：                    0.00
交割盈亏 Delivery P/L：                       0.00  货币质押变化金额 Chg in FX Pledge:          0.00

                                                                 成交记录 Transaction Record 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|成交日期| 投资单元 | 交易所 | 交易编码  |       品种       |      合约      |买/卖|   投/保    |  成交价  | 手数 |   成交额   |       开平       |  手续费  |  平仓盈亏  |     权利金收支      |     成交序号     |   资金账号   |
|  Date  |InvestUnit|Exchange|tradingcode|     Product      |   Instrument   | B/S |    S/H     |   Price  | Lots |  Turnover  |       O/C        |   Fee    |Realized P/L|Premium Received/Paid|     Trans.No.    |   AccountID  |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|20230215|123456    |上期所  |9999203177 |白银              |     ag2306     |   卖|投机        |  4946.000|     4|   296760.00|平今                |      0.00|      240.00|                 0.00|76886             |123456        |
|20230215|123456    |上期所  |9999203177 |白银              |     ag2306     |买   |投机        |  4927.000|     4|   295620.00|开                 |      2.96|        0.00|                 0.00|168930            |123456        |
|20230215|123456    |上期所  |9999203177 |白银              |     ag2306     |买   |投机        |  4942.000|     4|   296520.00|开                 |      2.97|        0.00|                 0.00|72736             |123456        |
|20230215|123456    |上期所  |9999203177 |白银              |     ag2306     |   卖|投机        |  4927.000|     2|   147810.00|开                 |      1.48|        0.00|                 0.00|167995            |123456        |
|20230215|123456    |上期所  |9999203177 |黄金              |     au2308     |   卖|投机        |   413.100|     2|   826200.00|开                 |      4.00|        0.00|                 0.00|168738            |123456        |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|共   5条|          |        |           |                  |                      |            |          |    16|  1862910.00|                  |     11.41|      240.00|                 0.00|                  |              |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
能源中心---INE  上期所---SHFE   中金所---CFFEX  大商所---DCE   郑商所---CZCE   广期所---GFEX
买---Buy   卖---Sell
投机---Speculation  套保---Hedge  套利---Arbitrage  一般---General  交易---Trade  做市商---Market Maker
开---Open 平---Close 平今---Close Today 强平---Forced Liquidation 平昨---Close Prev. 强减---Forced Reduction 本地强平---Local Forced Liquidation 

                                                         平仓明细 Position Closed 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 平仓日期 | 投资单元 | 交易所 | 交易编码  |       品种       |      合约      |开仓日期 |投/保|买/卖|   手数   |     开仓价    |     昨结算     |   成交价   |  平仓盈亏  |     权利金收支      |   资金账号   |
|Close Date|InvestUnit|Exchange|tradingcode|      Product     |   Instrument   |Open Date| S/H | B/S |   Lots   |Pos. Open Price|   Prev. Sttl   |Trans. Price|Realized P/L|Premium Received/Paid|   AccountID  |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|20230215  |123456    |上期所  |9999203177 |白银              |ag2306          |20230215 |投机 |   卖|         4|       4942.000|        4941.000|    4946.000|      240.00|                0.000|123456        |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|共     1条|          |        |           |                  |                |         |     |     |         4|               |                |            |      240.00|                  0.00|              |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
能源中心---INE  上期所---SHFE   中金所---CFFEX  大商所---DCE   郑商所---CZCE   广期所---GFEX  
买---Buy   卖---Sell 
投机---Speculation  套保---Hedge  套利---Arbitrage  一般---General  交易---Trade  做市商---Market Maker

                                                         持仓明细 Positions Detail
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 投资单元 | 交易所 | 交易编码  |       品种       |      合约      |开仓日期 |   投/保    |买/卖|持仓量 |    开仓价     |     昨结算     |     结算价     |  浮动盈亏  |  盯市盈亏 |  保证金   |       期权市值       |   资金账号   |
|InvestUnit|Exchange|tradingcode|     Product      |   Instrument   |Open Date|    S/H     | B/S |Positon|Pos. Open Price|   Prev. Sttl   |Settlement Price| Accum. P/L |  MTM P/L  |  Margin   | Market Value(Options)|   AccountID  |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|123456    |上期所  |9999203177 |       白银       |     ag2306     | 20230215|投机        |买   |      4|       4927.000|        4941.000|        4928.000|       60.00|      60.00|   56179.20|                  0.00|123456        |
|123456    |上期所  |9999203177 |       白银       |     ag2306     | 20230215|投机        |   卖|      2|       4927.000|        4941.000|        4928.000|      -30.00|     -30.00|   28089.60|                  0.00|123456        |
|123456    |上期所  |9999203177 |       黄金       |     au2308     | 20230215|投机        |   卖|      2|        413.100|         412.980|         413.800|    -1400.00|   -1400.00|  115864.00|                  0.00|123456        |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|共     3条|        |           |                  |                |         |            |     |      8|               |                |                |    -1370.00|   -1370.00|  200132.80|                  0.00|              |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
能源中心---INE  上期所---SHFE   中金所---CFFEX  大商所---DCE   郑商所---CZCE   广期所---GFEX
买---Buy   卖---Sell  
投机---Speculation  套保---Hedge  套利---Arbitrage  一般---General  交易---Trade  做市商---Market Maker

                                                               持仓汇总 Positions
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 投资单元 | 交易编码  |       品种       |      合约      |    买持     |    买均价   |     卖持     |    卖均价    |  昨结算  |  今结算  |持仓盯市盈亏|  保证金占用   |  投/保     |   多头期权市值   |   空头期权市值    |   资金账号   |
|InvestUnit|tradingcode|      Product     |   Instrument   |  Long Pos.  |Avg Buy Price|  Short Pos.  |Avg Sell Price|Prev. Sttl|Sttl Today|  MTM P/L   |Margin Occupied|    S/H     |Market Value(Long)|Market Value(Short)|   AccountID  |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|123456    |9999203177 |       白银       |     ag2306     |            4|     4927.000|             2|      4927.000|  4941.000|  4928.000|       30.00|       56179.20|投机        |              0.00|               0.00|123456        |
|123456    |9999203177 |       黄金       |     au2308     |            0|        0.000|             2|       413.100|   412.980|   413.800|    -1400.00|      115864.00|投机        |              0.00|               0.00|123456        |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|共     2条|           |                  |                |            4|             |             4|              |          |          |    -1370.00|      172043.20|            |              0.00|               0.00|              |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

"""
    parser = SettlementParser("\n")
    result = parser.parse(text)
    print(json.dumps(result, ensure_ascii=False, indent=2))

if __name__ == "__main__":
    testSettlementParser()
